import dayjs from "dayjs";


/**
 * 递归处理表格列配置，将嵌套的列配置展开为一维数组
 * @param {Array} list - 原始列配置数组
 * @returns {Array} 处理后的一维列配置数组
 * 
 * @description
 * - 递归处理带有children的嵌套列配置
 * - 对日期类型的列自动添加格式化render函数
 * - 支持自定义日期格式，默认为"YYYY-MM-DD HH:mm:ss"
 * 具体使用说明：
 * 如果业务代码中的columns中存在存在type为Date的列并且没有render，就自动将日期格式化，有render则按用户传入的render处理
 * 默认为YYYY-MM-DD hh:mm:ss，如果有传format参数，就使用传入的format格式化
 * 
 * @example
 * const columns = disparseColumns([
 *   { title: '日期', dataIndex: 'date', type: 'Date' },
 *   { 
 *     title: '用户',
 *     children: [
 *       { title: '姓名', dataIndex: 'name' }
 *     ]
 *   }
 * ]);
 */
const disparseColumns = (list = []) => {
    // let columns = [];
    // list.forEach((item) => {
    //     if (item.children) {
    //         columns = columns.concat(disparseColumns(item.children));

    //     } else {
    //         let newItem = { ...item };
    //         if (!item.render && item.type === "Date") {
    //             newItem.render = (text, record, index) => {
    //                 return dayjs(text).format(item.format || "YYYY-MM-DD HH:mm:ss")
    //             }
    //         }
    //         columns.push({
    //             ...newItem,

    //         })
    //     }
    // })

    // return columns;


    //重新写递归

    let columns = [];
    list.forEach((item) => {
        if (item.children) {
            columns = columns.concat(disparseColumns(item.children));

        } else {
            let newItem = { ...item };
            if (!item.render && item.type === "Date") {
                newItem.render = (text, record, index) => {
                    return dayjs(text).format(item.format || "YYYY-MM-DD HH:mm:ss")
                }
            }
            columns.push({
                ...newItem,

            })
        }
    })

    return columns;

}
export default disparseColumns;